<?php namespace system\model;
use houdunwang\model\Model;
class Category extends Model{
	//数据表
	protected $table = "category";

	//允许填充字段
	protected $allowFill = ['*'];

	//禁止填充字段
	protected $denyFill = [ ];

	//自动验证
	protected $validate=[
		//['字段名','验证方法','提示信息',验证条件,验证时间]
	];

	//自动完成
	protected $auto=[
		//['字段名','处理方法','方法类型',验证条件,验证时机]
	];
 
	//自动过滤
    protected $filter=[
        //[表单字段名,过滤条件,处理时间]
    ];
//    获取数据库数据
    public function getAllCate(){
       
//       return $this->get();
       return Arr::tree($this->get()->toArray(),'cate_name', $fieldPri = 'cate_id', $fieldPid = 'cate_pid');
    }
    
    
	//时间操作,需要表中存在created_at,updated_at字段
	protected $timestamps=true;
    
    /**
     * 获取除了自己和自己子集之外的数据
     */
    public function getSonCateData($cate_id)
    {
        //1.递归找子集，
        $cids = $this->getSon($this->get()->toArray(),$cate_id);
        //p($cids);
        //2.把自己追加进去
        $cids[] = $cate_id;
        //p($cids);
        //3.把自己和子集数据踢出去
        $res = $this->whereNotIn('cate_id',$cids)->get()->toArray();
        //p($res);
        return Arr::tree($res,'cate_name','cate_id','cate_pid');
    }
    
    /**
     * 递归找子集
     * @param $data				栏目所有数据
     * @param $cate_id			我们找$cate_id所有子集，栏目id
     */
    public function getSon($data,$cate_id)
    {
        //使用静态变量，不然每次调用自己的时候，$temp都是从空开始
        static $temp = [];
        foreach ($data as $k=>$v)
        {
//		    有没有栏目是他的子栏目
            if($v['cate_pid']==$cate_id){
                //echo 1;
                //说明这条数据是我的儿子
                $temp[] = $v['cate_id'];//把找到的这条数据对应的cid存起来
                $this->getSon($data,$v['cate_id']);//接下来应该继续去找$v['cate_id'],它的子集数据
            }
        }
        return $temp;
    }
    
}